/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package datos;

import java.awt.Color;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import negocio.Prenda;

public class PrendaBD {

    public boolean grabar(Prenda prenda) throws SQLException {
        OperacionesBase db = new OperacionesBase(); 
        String query =  "INSERT INTO color(idcolor, r, g, b)\n" +
            "VALUES ("+this.ultimoColor()+","+prenda.R+","+prenda.G+","+prenda.B+");"
                +"INSERT INTO vestuario(idvestuario, nombre,fech_adquisiscion,  foto,color)\n" +
            "VALUES ('"+prenda.getCodigo()+"','"+prenda.getNombre()+"','"+prenda.getFechaAdquisicion()+"','"+prenda.getFoto()+"',"+this.ultimoColor()+");\n" +
            "\n" +
            "INSERT INTO prenda(idvestuario, numlavados,numusos,  fechalavadoini,lavado ,fechalavadofin)\n" +
            "VALUES ('"+prenda.getCodigo()+"',"+prenda.getNumLavados()+","+prenda.getNumUsos()+",null,false,null);";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado; 
    }

    public int eliminar(int id) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "delete from prenda vestuario idvestuario=" + id + "";
        int resultado = db.modificacioneliminacion(query);
        db.cerrarConexion();
        return resultado;
    }
    public Prenda buscarPornombre(String nombre) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "select * from prenda where nombre =" + nombre + "";
        ResultSet resultado = db.seleccion(query);
        Prenda prenda = null;
        ArrayList todos = new ArrayList();
        if (resultado.next()) {
            prenda = new Prenda();
            prenda.setCodigo(resultado.getInt(4));
            prenda.setNombre(resultado.getString(5));
            todos.add(prenda);
        }
        db.cerrarConexion();
        return prenda;
    }
    public int ultimo() throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "select max(idvestuario) max from vestuario";
        ResultSet resultado = db.seleccion(query);
        resultado.next();
        return resultado.getInt(1);
    }
    public ArrayList listar() throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "select * from vestuario";
        ResultSet resultado = db.seleccion(query);
        Prenda prenda = null;
        ArrayList todos = new ArrayList();
        while (resultado.next()) {
            prenda = new Prenda();
            prenda.setCodigo(resultado.getInt(1));
            prenda.setNombre(resultado.getString(2));
            todos.add(prenda);
        }
        db.cerrarConexion();
        return todos;
    }
    public ArrayList busquedaLavado() throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "select * from BuscarRopaLavanderia() as (aa integer,a character varying,b character varying,c date,d double precision);";
        ResultSet resultado = db.seleccion(query);
        Prenda prenda = null;
        ArrayList todos = new ArrayList();
        while (resultado.next()) {
            prenda = new Prenda();
            prenda.setCodigo(resultado.getInt(1));
            prenda.setNombre(resultado.getString(2));
            prenda.setFoto(resultado.getString(3));
            prenda.setFechalav(resultado.getString(4));
            prenda.setDias(resultado.getInt(5));
            todos.add(prenda);
        }
        return todos;
    }

    public ResultSet buscadorDarDebaja(int op, boolean f) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "";
        if (op == 1) {
            query = "SELECT *from buscardarbaja(" + op + "," + f + ") as (IdPrenda integer,Nombre character varying,Fecha date,NumeroDefectos bigint);";
        } else if (op == 2) {
            query = " SELECT *from buscardarbaja(2,TRUE) as ( idvestuario integer, nombre character varying,foto character varying, fecha date,como_queda character varying,peso double precision);";
        }
        ResultSet resultado = db.seleccion(query);
        return resultado;
    }

    public void ponerDisponible(int idvestuario) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "select ReingresarRopa(" + idvestuario + ");";
        ResultSet resultado = db.seleccion(query);
    }

    public ResultSet buscadorPrenda(String tipo_busqueda, String sub_tipo_bus, String parametro, String parametro2, String cedula) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "SELECT *from buscador_prenda( '" + tipo_busqueda + "','" + sub_tipo_bus + "','" + parametro + "','" + parametro2 + "','" + cedula + "') as (idvestuario integer ,nombre character varying ,color_r integer, color_g integer, color_b integer,fech_adquisiscion date,numlavados integer, numusos integer,fechalavado date,lavado boolean,fechalavadoini date ,fechalavadofin date);";
        ResultSet resultado = db.seleccion(query);

        return resultado;
    }

    public ResultSet buscadorPrendaClasificador(String tipo_busqueda, String sub_tipo_bus, String parametro, String parametro2, String cedula) throws SQLException {
        OperacionesBase db = new OperacionesBase();

        String query = "SELECT *from buscador_prenda( '" + tipo_busqueda + "','" + sub_tipo_bus + "','" + parametro + "','" + parametro2 + "','" + cedula + "') as (idvestuario integer ,nombre character varying ,color_r integer, color_g integer, color_b integer,fech_adquisiscion date,numlavados integer, numusos integer,fechalavado date,lavado boolean,fechalavadoini date ,fechalavadofin date);";

        ResultSet resultado = db.seleccion(query);

        return resultado;
    }

    public ResultSet buscadorPrendaRango(String tipo_busqueda, String sub_tipo_bus, String parametro, String parametro2, String cedula) throws SQLException {
        OperacionesBase db = new OperacionesBase();

        String query = "SELECT *from buscador_prenda( '" + tipo_busqueda + "','" + sub_tipo_bus + "','" + parametro + "','" + parametro2 + "','" + cedula + "') as (idvestuario integer ,nombre character varying ,color_r integer, color_g integer, color_b integer,fech_adquisiscion date,numlavados integer, numusos integer,fechalavado date,lavado boolean,fechalavadoini date ,fechalavadofin date,ultimo_uso date,lugar_ultimo_uso character  varying);";

        ResultSet resultado = db.seleccion(query);

        return resultado;
    }

    public ResultSet buscadorPrendaUsos(String buscador, String toString, String parametro, String parametro2, String string) throws SQLException {
        OperacionesBase db = new OperacionesBase();

        String query = "SELECT * from buscador_prenda( '" + buscador + "','" + toString + "','" + parametro + "','" + parametro2 + "','" + string + "') as (idvestuario integer ,num_usos bigint,cedula character(10),nombre character varying ,color_r integer, color_g integer, color_b integer,fech_adquisiscion date,numlavados integer, numusos integer,fechalavado date,lavado boolean,fechalavadoini date ,fechalavadofin date);";

        ResultSet resultado = db.seleccion(query);

        return resultado;
    }

    public ResultSet buscadorPrendaDefectos1(String buscador, String sub_bus, String parametro, String parametro2, String cedula) throws SQLException {
        OperacionesBase db = new OperacionesBase();

        String query = "SELECT * from buscador_prenda( '" + buscador + "','" + sub_bus + "','" + parametro + "','" + parametro2 + "','" + cedula + "') as (idvestuario integer ,nombre character varying,color_r integer, color_g integer, color_b integer,fech_adquisiscion date,numlavados integer, numusos integer,fechalavado date,lavado boolean,fechalavadoini date ,fechalavadofin date,nombre_solucion character varying,nom_defecto character varying,foto_def character varying,foto_ves character varying);";

        ResultSet resultado = db.seleccion(query);

        return resultado;
    }

    public ResultSet buscadorPrendaDefectos2(String buscador, String sub_bus, String parametro, String parametro2, String cedula) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "SELECT * from buscador_prenda( '" + buscador + "','" + sub_bus + "','" + parametro + "','" + parametro2 + "','" + cedula + "') as (idvestuario integer ,nombre character varying,color_r integer, color_g integer, color_b integer,fech_adquisiscion date,numlavados integer, numusos integer,fechalavado date,lavado boolean,fechalavadoini date ,fechalavadofin date);";
        ResultSet resultado = db.seleccion(query);
        return resultado;
    }

    public ResultSet buscadorPrendaIndividual(String buscador, String sub_bus, String parametro, String parametro2, String cedula) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "SELECT * from buscador_prenda( '" + buscador + "','" + sub_bus + "','" + parametro + "','" + parametro2 + "','" + cedula + "') as (idvestuario integer ,nombre character varying,color_r integer, color_g integer, color_b integer,fech_adquisiscion date,numlavados integer, numusos integer,fechalavado date,lavado boolean,fechalavadoini date ,fechalavadofin date);";
        ResultSet resultado = db.seleccion(query);
        return resultado;

    }

    public ResultSet buscadorPrendaCompartida(String buscador, String sub_bus, String parametro, String parametro2, String cedula) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "SELECT * from buscador_prenda( '" + buscador + "','" + sub_bus + "','" + parametro + "','" + parametro2 + "','" + cedula + "') as (idvestuario integer ,nombre character varying,color_r integer, color_g integer, color_b integer,fech_adquisiscion date,numlavados integer, numusos integer,fechalavado date,lavado boolean,fechalavadoini date ,fechalavadofin date);";
        ResultSet resultado = db.seleccion(query);
        return resultado;

    }

    public ResultSet calificadorPrenda() throws SQLException {
        OperacionesBase db = new OperacionesBase();

        String query = "SELECT usuario.nombre AS usuario, vestuario.nombre AS prenda, criterio.calificacion FROM usuario, user_tiene_vestu, vestuario, criterio WHERE usuario.cedula = user_tiene_vestu.cedula AND user_tiene_vestu.idvesturio = vestuario.idvestuario AND user_tiene_vestu.idcalificacion = criterio.idcalificador;";

        ResultSet resultado = db.seleccion(query);

        return resultado;
    }

    public ResultSet ingresoCalificacion(String cedula, int idvestuario, int calificacion) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "INSERT INTO user_tiene_vestu(cedula, idvesturio, idcalificacion) VALUES (" + cedula + ", ?, ?);";
        ResultSet resultado = db.seleccion(query);
        return resultado;
    }

    public ResultSet listaPrendaDB() throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "SELECT vestuario.idvestuario,vestuario.nombre, vestuario.fech_adquisiscion AS adquirido_el, prenda.numusos AS usos, prenda.numlavados AS lavados, vestuario.foto, color.r AS rojo, color.g AS verde, color.b AS azul FROM prenda, vestuario, color WHERE prenda.idvestuario = vestuario.idvestuario AND vestuario.color = color.idcolor;";
        ResultSet resultado = db.seleccion(query);
        return resultado;
    }
     public ResultSet listaDEfectoDB(int id) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "SELECT DISTINCT vestuario.nombre AS prenda, defecto.nombre AS defecto, grado.nivel AS grado, solucion.nombre AS solucion FROM solucion,vest_defec, defecto, grado,vestuario WHERE solucion.idsolucion = defecto.idsolucion AND vest_defec.idvestuario = defecto.iddefecto AND grado.idgrado = defecto.idgrado AND vestuario.idvestuario = vest_defec.idvestuario  AND vestuario.idvestuario="+ id +";";
        ResultSet resultado = db.seleccion(query);
        return resultado;
    }
        public int ultimoColor() throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "SELECT max(idcolor) FROM color";
        ResultSet resultado = db.seleccion(query);
        resultado.next();
        System.out.print( resultado.getInt(1)+1);
        return resultado.getInt(1)+1;
    }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        public boolean calificar(String cedula, int idVestuario,int calificacion) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = null;
        query = "UPDATE user_tiene_vestu   SET idcalificacion="+calificacion+" WHERE cedula='"+cedula+"' and idvesturio="+idVestuario+";";
        boolean aux = db.ingreso2(query);
        db.cerrarConexion();
        return aux;
    }        
}
